home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / cenvid / del.cmm < prev    next >
Encoding:
Text File  |  1995-10-02  |  2.9 KB  |  107 lines

  1. /*
  2.  * del.cmm
  3.  *
  4.  * CEnvi shell command 'del'. Deletes one or more specified files.
  5.  */
  6.  
  7. #include "Netware.lib"
  8.  
  9. usage()
  10. {
  11.   printf("Use the DEL command to delete one or more files.\n");
  12.   printf("Syntax:\n");
  13.   printf("  DEL [drive:][path]filename [/P][/N]\n");
  14.   printf("where:\n");
  15.   printf("  drive:/path/filename   Specifies file(s) to delete. Global file\n");
  16.   printf("                         name characters * and ? can be used in the\n");
  17.   printf("                         file name specified.\n");
  18.   printf("  /P                     Prompts for confirmation before deleting\n");
  19.   printf("                         each file.\n");
  20.   printf("  /N                     Prevents the message \"Are you sure (Y/N)?\"\n");
  21.   printf("                         from being displayed as files are deleted.\n");
  22.   exit(EXIT_FAILURE);
  23. }
  24.  
  25. /* ---------------------------------------------------------------------- */
  26.  
  27. dir[0] = "";
  28. it = 1;
  29. prompt = FALSE;
  30. are_you_sure = TRUE;
  31.  
  32. parse_command_line(argc,argv)
  33. {
  34.   for( i=1;i<argc;i++ )
  35.     {
  36.       if( argv[i][0]=='-' || argv[i][0]=='/' )
  37.     {
  38.       switch( toupper(argv[i][1]) )
  39.         {
  40.         default: usage();
  41.         case 'P': prompt = TRUE; break;
  42.         case 'N': are_you_sure = FALSE; break;
  43.         }
  44.     } else {
  45.           if( it )
  46.             {
  47.               dir[0] = argv[i]; it = 0;
  48.             } else {
  49.               dir[GetArraySpan(dir)+1] = argv[i];
  50.             }
  51.     }
  52.     }
  53. }
  54.  
  55. /* ---------------------------------------------------------------------- */
  56.  
  57. main(argc,argv)
  58. {
  59. // First thing to do is parse the command line.
  60.  
  61.   parse_command_line(argc,argv);
  62.  
  63.   if( it ) Usage();
  64.  
  65.   for( i=0;i<=GetArraySpan(dir);i++ )
  66.     {
  67.       to_kill = Directory(dir[i]);
  68.       if( to_kill==NULL ) continue;
  69.  
  70.       if( GetArraySpan(to_kill)==0 && to_kill[0].attrib & _A_SUBDIR )
  71.         {
  72.           if( defined(_NWNLM_) )
  73.             strcat(dir[i],"/*.*");
  74.           else
  75.             strcat(dir[i],"\\*.*");
  76.           i--;
  77.           continue;
  78.         }
  79.  
  80.       if( are_you_sure && strstr(dir[i],"*.*") )
  81.         {
  82.           printf("Delete \"%s\"; Are you sure? (Y/N) ",dir[i]);
  83.           ch = getch();
  84.           printf("%c\n",ch);
  85.           if( toupper(ch)!='Y' ) exit(EXIT_FAILURE);
  86.         }
  87.       for( i=0;i<=GetArraySpan(to_kill);i++ )
  88.         {
  89.           if( to_kill[i].attrib & _A_SUBDIR )
  90.             {
  91.               printf("[Warning] Directory \"%s\" ignored; use DELTREE to delete directories.\n",to_kill[i].name);
  92.               continue;
  93.             }
  94.  
  95.           if( prompt )
  96.             {
  97.               printf("Delete file \"%s\"? (Y/N) ",to_kill[i].name);
  98.               ch = getch();
  99.               printf("%c\n",ch);
  100.               if( toupper(ch)!='Y' ) continue;
  101.             }
  102.           if( remove(to_kill[i].name) )
  103.             printf("Unable to delete file \"%s\".\n",to_kill[i].name);
  104.         }
  105.     }
  106. }
  107.